package paquetes.manager;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RMISecurityManager;
import java.rmi.RemoteException;
import java.util.*;

import paquetes.interfazRemota.PuntoDeVentaController;
import paquetes.negocioVO.*;

public class AdministradorCliente
{	
	private PuntoDeVentaController oficinaVentas;
	private static AdministradorCliente instancia;
	
	public static AdministradorCliente getInstancia()
	{
		if(instancia==null)
			instancia = new AdministradorCliente();
		return instancia;
	}
	
	private AdministradorCliente()
	{
		try {
			
			/*
            System.setProperty("java.security.policy","C:/Users/Emiliano/Desktop/TP/Paquetes_Cliente/src/java.policy");
			
			System.setProperty("java.rmi.server.codebase","file:C:/Users/Emiliano/Desktop/TP/Paquetes_Repositorio/src/paquetes/");
			
			System.setSecurityManager(new RMISecurityManager());
			if (System.getSecurityManager() == null)
				   System.setSecurityManager(new RMISecurityManager());
			*/
			System.setProperty("java.rmi.server.codebase","file:C:/Users/Emiliano/Desktop/TP/Paquetes_Repositorio/src/paquetes/");
			System.setProperty("java.security.policy","C:/Users/Emiliano/Desktop/TP/Paquetes_Cliente/src/java.policy");
			System.setProperty("java.rmi.server.hostname","127.0.0.1");
			
			
			oficinaVentas = (PuntoDeVentaController) Naming.lookup("//localhost/TPO_Paquetes_PuntoDeVenta");
			System.out.println("Tengo el punto de Venta");
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (RemoteException e) {
			e.printStackTrace();
		} catch (NotBoundException e) {
			e.printStackTrace();
		}
	}
	
	public  List<ClienteVO> getClientes() {
            try {
				return oficinaVentas.obtenerClientes();
			} catch (RemoteException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return null;
		
	
	}

	public  ClienteVO buscarCliente(String doc) {
            try {
				return oficinaVentas.buscarCliente(doc);
			} catch (RemoteException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return null;

	}
	
	public  void actualizar(int id,String tipo,String nombre,String documento,String telefonocontacto,DomicilioVO domicilio) {
            try {
				oficinaVentas.modificarCliente(id,tipo,nombre,documento,telefonocontacto,domicilio);
			} catch (RemoteException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}
	
	public  void alta(String tipo,String nombre,String documento,String telefonocontacto,DomicilioVO domicilio) {
            try {
            	
            	
            	oficinaVentas.altaCliente(tipo,nombre,documento,telefonocontacto,domicilio);
			    
            } catch (RemoteException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		
	}

	public  void baja(int id) {
            try {
				oficinaVentas.bajaCliente(id);
			} catch (RemoteException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}
	
}
